"""
编程题
在第一题的基础上,使用二分查找,查找是否有8这个数,如果有就返回下标,如果没有,就返回-1
注意：这里的列表是从大到小
"""
def bubble_sort(num_list):
    for i in range(len(num_list) - 1):
        for j in range(len(num_list) - 1 - i):
            if num_list[j] < num_list[j + 1]:
                num_list[j] , num_list[j+1] = num_list[j+1] , num_list[j]
    return num_list

"""
    进行二分查找
"""
def erfen_check(num_list , find_val):
    #定义找到的数字的索引
    find_index = -1
    #左边的索引
    left_index = 0
    #右边的索引
    right_index = len(num_list) - 1

    while left_index <= right_index:
        # 找到中间的索引
        mid_index = (left_index + right_index) // 2
        #如果中间的值小于要找的值，那么就去左边查找
        if num_list[mid_index] < find_val:
            right_index = mid_index - 1
        elif num_list[mid_index] > find_val:#如果中间的值小于要找的值，那么就去右边查找
            left_index = mid_index + 1
        else:#如果找到了就直接返回
            find_index = mid_index
            break
    return find_index

import random
num_list = []
for _ in range(10):
    num_list.append(random.randint(1 , 100))

bubble_sort(num_list)
print(num_list)
find_index = erfen_check(num_list , 8)
print(find_index)
